﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;
using Winner.Game.Entity.POCOModel;

namespace Winner.Game.Services
{
   public class ContextFactory
    {
        /// <summary>
        /// 数据库访问上下文工厂
        /// 从当前请求线程中获取上下文， 如果当前请求线程中不存在，则创建，保证同一个请求线程中数据访问上下文的唯一
        /// </summary>
        /// <returns></returns>
        public static DbContext GetCurrentContext()
        {
            //获取请求线程中的数据访问上下文
            var dbContext = CallContext.GetData("DbContext") as DbContext;
            //如果不存在则实例化出新的
            if (dbContext==null)
            {
                //实例数据访问上下文
                dbContext = new GamePrintModel();
                //放入当前请求的线程中
                CallContext.SetData("DbContext", dbContext);
            }
            return dbContext;
        }
    }
}
